OPTIONS:
OPTIMIZATION_LEVEL=0

CONSTANTS:
PAYOUT_01=100
PAYOUT_02= 85
PAYOUT_03= 70
PAYOUT_04= 55
PAYOUT_05= 40
PAYOUT_06= 25
PAYOUT_07= 10
PAYOUT_08=  8
PAYOUT_09=  8
PAYOUT_10=  4
PAYOUT_11=  2

SYMBOLS_REEL_1=22
SYMBOLS_REEL_2=22
SYMBOLS_REEL_3=22

TOTAL_NUMBER_OF_COMBINATIONS=SYMBOLS_REEL_1 * SYMBOLS_REEL_2 * SYMBOLS_REEL_3

PAYOUT_WITHOUT_HOLD=3658

PAYOUT_WITHOUT_HOLD_RATIO=PAYOUT_WITHOUT_HOLD / TOTAL_NUMBER_OF_COMBINATIONS

VARIABLES:
R1={1 .. SYMBOLS_REEL_1}
R2={1 .. SYMBOLS_REEL_2}
R3={1 .. SYMBOLS_REEL_3}

LOCAL_VARIABLES:
S1=(R1=1)*3 +(R1=2)*3 +(R1=3)*4 +(R1=4)*4 +(R1=5)*4 +(R1=6)*4 +(R1=7)*4 +(R1=8)*4 +(R1=9)*4 +(R1=10)*4 +(R1=11)*4 +(R1=12)*5 +(R1=13)*5 +(R1=14)*5 +(R1=15)*5 +(R1=16)*6 +(R1=17)*7 +(R1=18)*7 +(R1=19)*8 +(R1=20)*9 +(R1=21)*10+(R1=22)*11
S2=(R2=1)*3 +(R2=2)*3 +(R2=3)*3 +(R2=4)*4 +(R2=5)*4 +(R2=6)*5 +(R2=7)*5 +(R2=8)*6 +(R2=9)*6 +(R2=10)*6 +(R2=11)*6 +(R2=12)*6 +(R2=13)*6 +(R2=14)*6 +(R2=15)*6 +(R2=16)*6 +(R2=17)*7 +(R2=18)*7 +(R2=19)*8 +(R2=20)*9 +(R2=21)*10+(R2=22)*11
S3=(R3=1)*3 +(R3=2)*3 +(R3=3)*3 +(R3=4)*3 +(R3=5)*3 +(R3=6)*3 +(R3=7)*3 +(R3=8)*3 +(R3=9)*3 +(R3=10)*4 +(R3=11)*4 +(R3=12)*4 +(R3=13)*4 +(R3=14)*4 +(R3=15)*5 +(R3=16)*6 +(R3=17)*7 +(R3=18)*8 +(R3=19)*9 +(R3=20)*10+(R3=21)*11+(R3=22)*12

// 3 Bar
WIN_01=S1=11 && S2=11 && S3=12
// 3 Lygte
WIN_02=S1=10 && S2=10 && S3=11
// 3 Togvogn
WIN_03=S1= 9 && S2= 9 && S3=10
// 3 Slikkepind
WIN_04=S1= 8 && S2= 8 && S3= 9
// 3 Tog
WIN_05=S1= 7 && S2= 7 && S3= 8

// 2 Blomme +1 Blomme eller Bar
WIN_06=S1= 5 && S2= 5 && (S3= 6 || S3= 12)
// 2 Klokke +1 Klokke eller Bar
WIN_07=S1= 6 && S2= 6 && (S3= 7 || S3= 12)
// 2 Appelsin +1 Appelsin eller Bar
WIN_08=S1= 4 && S2= 4 && (S3= 5 || S3= 12)

// 3 Kirsebær
WIN_09=S1= 3 && S2= 3 && S3= 4
// 2 Kirsebær
WIN_10=S1= 3 && S2= 3 && S3!=4
// 1 Kirsebær
WIN_11=S1= 3 && S2!=3


// Normal hold without kirsebær.
// H300_=0
// Normal hold with kirsebær.
H300_=S2=3 && S3!=4 && !(S1=4 && S3=5) && !(S1=4 && S3=12) && !(S1=5 && S3=6) && !(S1=5 && S3=12) && !(S1=6 && S3=7) && !(S1=6 && S3=12) && !(S1=7 && S3=8) && !(S1=8 && S3=9) && !(S1=9 && S3=10) && !(S1=10 && S3=11) && !(S1=11 && S3=12)


// Generated by OldTrainHoldDataConverter.java start
H304_=S2=3 && S3=4
H405_=S2=4 && S3=5
H412_=S2=4 && S3=12 && S1!=6 && S1!=11
H506_=S2=5 && S3=6
H512_=S2=5 && S3=12
H607_=S2=6 && S3=7 && S1!=6 && S1!=6
H612_=S2=6 && S3=12 && S1!=4 && S1!=5 && S1!=6 && S1!=6 && S1!=11
H708_=S2=7 && S3=8
H809_=S2=8 && S3=9
H910_=S2=9 && S3=10
H1011_=S2=10 && S3=11
H1112_=S2=11 && S3=12
H40005_=S1=4 && S3=5 && S2!=4
H40012_=S1=4 && S3=12 && S2!=4 && S2!=5 && S2!=11
H40400_=S1=4 && S2=4 && S3!=5 && S3!=12
H50006_=S1=5 && S3=6 && S2!=5
H50012_=S1=5 && S3=12 && S2!=4 && S2!=5 && S2!=11
H50500_=S1=5 && S2=5 && S3!=6 && S3!=12
H60007_=S1=6 && S3=7
H60012_=S1=6 && S3=12 && S2!=5 && S2!=11
H60600_=S1=6 && S2=6 && S3!=7 && S3!=12
H70008_=S1=7 && S3=8 && S2!=7
H70700_=S1=7 && S2=7 && S3!=8 && S3!=8
H80009_=S1=8 && S3=9 && S2!=8
H80800_=S1=8 && S2=8 && S3!=9
H90010_=S1=9 && S3=10 && S2!=9
H90900_=S1=9 && S2=9 && S3!=10
H100011_=S1=10 && S3=11 && S2!=10
H101000_=S1=10 && S2=10 && S3!=11
H110012_=S1=11 && S3=12 && S2!=5 && S2!=11
H111100_=S1=11 && S2=11 && S3!=12


H_TOT=H300_ + H304_ + H405_ + H412_ + H506_ + H512_ + H607_ + H612_ + H708_ + H809_ + H910_ + H1011_ + H1112_ + H40005_ + H40012_ + H40400_ + H50006_ + H50012_ + H50500_ + H60007_ + H60012_ + H60600_ + H70008_ + H70700_ + H80009_ + H80800_ + H90010_ + H90900_ + H100011_ + H101000_ + H110012_ + H111100_


H_VALUE=H300_*300 + H304_*304 + H405_*405 + H412_*412 + H506_*506 + H512_*512 + H607_*607 + H612_*612 + H708_*708 + H809_*809 + H910_*910 + H1011_*1011 + H1112_*1112 + H40005_*40005 + H40012_*40012 + H40400_*40400 + H50006_*50006 + H50012_*50012 + H50500_*50500 + H60007_*60007 + H60012_*60012 + H60600_*60600 + H70008_*70008 + H70700_*70700 + H80009_*80009 + H80800_*80800 + H90010_*90010 + H90900_*90900 + H100011_*100011 + H101000_*101000 + H110012_*110012 + H111100_*111100


P300_=H300_ * 0.4462809917355372
P304_=H304_ * 0.7272727272727273
P405_=H405_ * 3.4545454545454546
P412_=H412_ * 3.4545454545454546
P506_=H506_ * 4.7272727272727275
P512_=H512_ * 4.7272727272727275
P607_=H607_ * 0.6363636363636364
P612_=H612_ * 0.6363636363636364
P708_=H708_ * 3.8181818181818183
P809_=H809_ * 2.6818181818181817
P910_=H910_ * 3.3636363636363638
P1011_=H1011_ * 4.045454545454546
P1112_=H1112_ * 4.7272727272727275
P40005_=H40005_ * 0.7272727272727273
P40012_=H40012_ * 0.7272727272727273
P40400_=H40400_ * 0.7272727272727273
P50006_=H50006_ * 2.272727272727273
P50012_=H50012_ * 2.272727272727273
P50500_=H50500_ * 2.272727272727273
P60007_=H60007_ * 4.090909090909091
P60012_=H60012_ * 4.090909090909091
P60600_=H60600_ * 0.9090909090909091
P70008_=H70008_ * 3.6363636363636362
P70700_=H70700_ * 1.8181818181818181
P80009_=H80009_ * 2.5
P80800_=H80800_ * 2.5
P90010_=H90010_ * 3.1818181818181817
P90900_=H90900_ * 3.1818181818181817
P100011_=H100011_ * 3.8636363636363638
P101000_=H101000_ * 3.8636363636363638
P110012_=H110012_ * 4.545454545454546
P111100_=H111100_ * 4.545454545454546


P_TOT=P300_ + P304_ + P405_ + P412_ + P506_ + P512_ + P607_ + P612_ + P708_ + P809_ + P910_ + P1011_ + P1112_ + P40005_ + P40012_ + P40400_ + P50006_ + P50012_ + P50500_ + P60007_ + P60012_ + P60600_ + P70008_ + P70700_ + P80009_ + P80800_ + P90010_ + P90900_ + P100011_ + P101000_ + P110012_ + P111100_

// Generated by OldTrainHoldDataConverter.java end

RULES:
WIN_01 + WIN_02 + WIN_03 + WIN_04 + WIN_05 + WIN_06 + WIN_07 + WIN_08 + WIN_09 + WIN_10 + WIN_11 = 0

H_TOT>0

OUTPUT:
${SOLUTION_NUMBER:#:#}  ${R1:#:Reel 1 position}  ${R2:#:Reel 2 position}  ${R3:#:Reel 3 position}  ${S1:[0# - |1#!!!!!|3# Kirsebær |4# Appelsin |5# Blomme |6# Klokke |7# Tog |8# Slikkepind |9# Togvogn |10# Lygte |11# Bar |12#!!!!]:Reel 1 symbol}  ${S2:[0# - |1#!!!!!|3# Kirsebær |4# Appelsin |5# Blomme |6# Klokke |7# Tog |8# Slikkepind |9# Togvogn |10# Lygte |11# Bar |12#!!!!]:Reel 2 symbol}  ${S3:[0# - |1#!!!!!|3# Pyramide |4# Kirsebær |5# Appelsin |6# Blomme |7# Klokke |8# Tog |9# Slikkepind |10# Togvogn |11# Lygte |12# Bar |13#!!!!]:Reel 3 symbol}  ${0:[0#]:Hold} ${H_VALUE/100/100%100>1:[0#-|1#H]:1} ${H_VALUE/100%100>1:[0#-|1#H]:2} ${H_VALUE%100>1:[0#-|1#H]:3}  ${H_VALUE:(#):Value}  ${P_TOT:0.0000%:Payout ratio}
OUTPUT_FOOTER:


MAX(H_TOT): ${MAX(H_TOT)} => ${MAX(H_TOT) > 1:[0#Status ok|1#ERROR!!!]}

Payout for hold pulls (SUM(P_TOT)): ${SUM(P_TOT)}
Number of combinations where a hold should be done (NUMBER_OF_SOLUTIONS): ${NUMBER_OF_SOLUTIONS}
Hold ratio: ${NUMBER_OF_SOLUTIONS} / (${NUMBER_OF_POSSIBLE_VALUES(R1)} * ${NUMBER_OF_POSSIBLE_VALUES(R2)} * ${NUMBER_OF_POSSIBLE_VALUES(R3)}) = ${NUMBER_OF_SOLUTIONS} / (${NUMBER_OF_POSSIBLE_VALUES(R1) * NUMBER_OF_POSSIBLE_VALUES(R2) * NUMBER_OF_POSSIBLE_VALUES(R3)}) = ${NUMBER_OF_SOLUTIONS / (NUMBER_OF_POSSIBLE_VALUES(R1) * NUMBER_OF_POSSIBLE_VALUES(R2) * NUMBER_OF_POSSIBLE_VALUES(R3)):0.0000%}
Payout with hold ratio (Payout for hold pulls / Number of combinations where a hold should be done) = ${SUM(P_TOT):0.0000} / ${NUMBER_OF_SOLUTIONS}): ${SUM(P_TOT) / NUMBER_OF_SOLUTIONS:0.0000%}
Kirsebær: ${SUM(H300_) > 0:[0#Not included|1#Are included]}


Total calculation
Number of combinations where a hold should be done:                         ${NUMBER_OF_SOLUTIONS}
Payout for hold pulls:                                                      ${SUM(P_TOT):0.0000}
Total combinations (${SYMBOLS_REEL_1} * ${SYMBOLS_REEL_3} * ${SYMBOLS_REEL_3}):                                         ${TOTAL_NUMBER_OF_COMBINATIONS}
Payout without hold:                                                        ${PAYOUT_WITHOUT_HOLD}
Payout without hold ratio (${PAYOUT_WITHOUT_HOLD} / ${TOTAL_NUMBER_OF_COMBINATIONS}):                                     ${PAYOUT_WITHOUT_HOLD_RATIO:0.0000%}
Non hold pulls (${TOTAL_NUMBER_OF_COMBINATIONS} - ${NUMBER_OF_SOLUTIONS}):                                              ${TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS}
Non hold payout (${TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS} * ${PAYOUT_WITHOUT_HOLD_RATIO:0.0000}):                                            ${(TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS) * PAYOUT_WITHOUT_HOLD_RATIO:0.0000}
Extra pulls:                                                                ${NUMBER_OF_SOLUTIONS}
Extra pulls payout (${NUMBER_OF_SOLUTIONS} * ${PAYOUT_WITHOUT_HOLD_RATIO:0.0000}):                                         ${NUMBER_OF_SOLUTIONS * PAYOUT_WITHOUT_HOLD_RATIO:___0.0000}
Total pulls (${NUMBER_OF_SOLUTIONS} + ${TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS} + ${NUMBER_OF_SOLUTIONS}):                                          ${NUMBER_OF_SOLUTIONS + (TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS) + NUMBER_OF_SOLUTIONS}
Total payout (${SUM(P_TOT):0.0000} + ${(TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS) * PAYOUT_WITHOUT_HOLD_RATIO:0.0000} + ${NUMBER_OF_SOLUTIONS * PAYOUT_WITHOUT_HOLD_RATIO:___0.0000}):                           ${SUM(P_TOT) + (TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS) * PAYOUT_WITHOUT_HOLD_RATIO + NUMBER_OF_SOLUTIONS * PAYOUT_WITHOUT_HOLD_RATIO:0.0000}
Total payout ratio (${SUM(P_TOT) + (TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS) * PAYOUT_WITHOUT_HOLD_RATIO + NUMBER_OF_SOLUTIONS * PAYOUT_WITHOUT_HOLD_RATIO:0.0000} / ${NUMBER_OF_SOLUTIONS + (TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS) + NUMBER_OF_SOLUTIONS}):                                       ${(SUM(P_TOT) + (TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS) * PAYOUT_WITHOUT_HOLD_RATIO + NUMBER_OF_SOLUTIONS * PAYOUT_WITHOUT_HOLD_RATIO) / (NUMBER_OF_SOLUTIONS + (TOTAL_NUMBER_OF_COMBINATIONS - NUMBER_OF_SOLUTIONS) + NUMBER_OF_SOLUTIONS):0.0000%}